package com.tedu.api.io;

import java.io.*;
import java.util.Scanner;

/**
 * 练习：做一个笔记本程序
 * 需求：程序开始之后，要求用户控制台下输入文件名，假设：a.txt
 *      然后针对文件【a.txt】进行写操作，用户一行一行输入文本【控制台】，
 *      保存a.txt文件中
 *      用户可以一直输入文件，直到用户输入“退出或者exit”程序结束
 *      保存a.txt生成在   API  项目下
 */
public class Note {
    //主方法：直接写文件   相对路径a.txt    根级路径---指定API
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        //1.创建扫描器--控制台---用户输入：文件名
        //扫描器类----功能：控制卡主---等待用户输入：文本
        Scanner input=new Scanner(System.in);
        System.out.println("请输入文件名：");
        //nextLine() 获取从控制台输入一行文本内容
        String text= input.nextLine();
        //System.out.println(text);
        //2.控制台输入文件名---通过输出流---写出--一行一行【高级流】   ./API/a.txt
        FileOutputStream fos=
                new FileOutputStream("API"+ File.separator+text);
        //高级流--转换流：指定编码集--缓冲流：高效----字符输出流
        OutputStreamWriter osw=
                new OutputStreamWriter(fos,"UTF8");
        BufferedWriter bw=new BufferedWriter(osw);
        PrintWriter pw=new PrintWriter(bw);
        //3.控制台输入：文本内容--对每行文本内容写出
        System.out.println("请开始输入内容【exit/退出】：");
        //3.1用户--一直输入:直到用户输入“exit/推出”结束程序
        String line=null;//先定义 死循环外--①赋值②减少内存开销
        while(true){
            line= input.nextLine();//从控制台获取一行文本
            //控制台输入文本---判断，如果输入文本，exit或者退出【退出】
            if(line.equals("退出")||line.equals("exit")){
                break;//打断--程序跳出
            }
            //写出 line  文本
            pw.println(line);
        }
        System.out.println("拜拜~~~，请查看API项目目录下");
        pw.close();
        //关闭高级流---缓冲字符流：【缓冲区】关闭流--调用flush
        //针对
    }
}
